#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>

#define MAX_NUM 100

int sum = 0; // 全局变量，用于统计加和结果

void calc(int start, int end) 
{
    for (int i = start; i <= end; i++) 
    {
        sum += i;
    }
}
int main() 
{
    int status=0;
    int step = MAX_NUM / 2; // step 表示每个子进程计算的区间大小
    for (int i = 0; i < 2; i++) 
    {
        int pid = fork(); // 创建新的子进程
        if (pid == -1) 
        { // 创建失败
            printf("Failed to create child process.\n");
            exit(1);
        } 
        else if(pid==0)
        {
            // 子进程
            int start = i * step + 1;//1 51
            int end = (i + 1) * step;//50 100
            calc(start, end);
            exit(0); // 子进程结束
        }
    }
    // 等待子进程结束
    for (int i = 0; i < 2; i++) 
    {
        wait(&status);
    }
    printf("The sum of 1 to %d is %d\n", MAX_NUM, sum);
    return 0;
}